<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<!--

	this file outputs php code that contains an array
	containing ISBN related data.
	
	this code can be used by the ISBN php class.
	
	the datasource is a javascript file (.js) located on the website
	of the international ISBN angency (see blow).
	
	you need an javascript enabled browser to output the code.
	
	version: 0.1.3
			 
 -->
<html>
<head>
	<title>ISBN Code-Generator - Ranges</title>
</head>
<body>
<h1>/* ISBN Code-Generator - Ranges */</h1>
<!--
	read external datasource:
-->
<script src="http://www.isbn-international.org/converter/ranges.js" language="javascript" type="text/javascript"></script>
<script language="javascript" type="text/javascript">
document.write('<pre>');
/* loop through array with ID numbers 
 * then output object-data
 */
for (i=0; i<gi.idarr.length; i++) {
	mid = gi.idarr[i];
	marea = "area" + mid;
	if (! gi[marea] ) {
		alert ("Definition error\n\nNo object for area " + mid);
	} else {
		/* output */
		indentcode = '        '; //8 chars default indent in generated code
		indent = indentcode + '                       '; //22 chars; array line
		linelen = 85;

		/* wordwrap & escape ' within grouptext */
		grouptext = gi[marea].text;	
		if (grouptext.length > 47) {
			grouptext = grouptext.substr(0, 45) + '...';			
		}
		grouptext = grouptext.replace(/'/, '\\\'');		
		
		/* 'wordwrap' pubrange */
		pubrange = gi[marea].pubrange;
		rest = pubrange;
		pubranges = new Array();
		if (rest.length < 30) 
		{
			pubranges.push('\'' + rest + '\'');
		} 
		else
		{
			lenstring = 47;
			do
			{
				if (rest.length < lenstring)
				{
					break;
				}
				start = rest.substr(0, lenstring);
				seppos = start.lastIndexOf(';');
				if (seppos == -1)
				{
					rest = rest.substr(lenstring );
				}
				else
				{
					start = start.substr(0, seppos + 1);
					rest = rest.substr(seppos + 1);
				}
				pubranges.push('\'' + start + '\'.');
			}
			while (true);
			pubranges.push('\'' + rest + '\'');
		}
		mido = '     '.substr(0, 5 - mid.toString().length) + mid;
		document.write(indentcode + '$groups[' + mido + '] ' + '= array(\'' + grouptext +'\',');
		for (var range in pubranges)
		{
			if (pubranges[range].length > 2) {
				document.write('\n' + indent);
			}
			document.write(pubranges[range]);
		}		
		document.write(');\n');
		// document.write ('<tr><td align="center">' +mid+'</td><td>' + gi[marea].text+'</td><td align="center" nowrap>'+ gi[marea].pubrange.replace(/;/g, '<br>').replace(/-/g, " - ") + '</td></tr>');
	}	
}
document.write('</pre>');

/* example code from the default implementation and datasource:
 * http://www.isbn-international.org/converter/ranges.htm
 */
/*
document.write ('<table cellpadding="5" width="70%" cellspacing="1" align="left" border="1">');
document.write ('<tr><td align="center">Group Number</td><td>Area</td><td align="center">Valid Publisher Numbers</td></tr>');
for (i=0; i<gi.idarr.length; i++) {
mid = gi.idarr[i];
marea = "area" + mid;
if (! gi[marea] ) alert ("Definition error\n\nNo object for area " + mid);
//if (! gi[marea].text ) alert ("No area object text " + mid);
//if (! gi[marea].pubrange ) alert ("No range defined for " + mid);
document.write ('<tr><td align="center">' +mid+'</td><td>' + gi[marea].text+'</td><td align="center" nowrap>'+ gi[marea].pubrange.replace(/;/g, '<br>').replace(/-/g, " - ") + '</td></tr>');
}
document.write ('</table><br><br><br>');
*/
</script>
</body>
</html>